Laravel-এর ডিরেক্টরি স্ট্রাকচার একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য খুবই সুসংগঠিত এবং কাঠামোবদ্ধ। এখানে Laravel 11-এর ডিরেক্টরি স্ট্রাকচারের মূল অংশগুলো উল্লেখ করা হলো:
অর্থাৎ Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি সংগঠিত এবং কার্যকরী ফরম্যাটে ডিজাইন করা হয়েছে, যা ডেভেলপারদের জন্য কাজ করা সহজ করে। এই স্ট্রাকচারটি বিভিন্ন ফাইল এবং ফোল্ডারকে তাদের ফাংশন অনুযায়ী শ্রেণীবদ্ধ করে, যাতে অ্যাপ্লিকেশনের বিভিন্ন অংশ সহজে পরিচালনা করা যায়।
এখানে Laravel অ্যাপ্লিকেশন তৈরি করার পর যে ডিরেক্টরি স্ট্রাকচারটি পাওয়া যায় তা নিচে উল্লেখ করা হলো:
app/
Console/
Exceptions/
Http/
Controllers/
Middleware/
Models/
Policies/
bootstrap/
cache/
config/
database/
factories/
migrations/
seeders/
public/
resources/
css/
js/
views/
routes/
storage/
app/
framework/
logs/
tests/
vendor/
.env
.artisan
composer.json
package.json
phpunit.xml
README.md
your-laravel-app/
│
├── app/ # অ্যাপ্লিকেশনের লজিক
├── bootstrap/ # অ্যাপ্লিকেশন শুরু করার ফাইল
├── config/ # কনফিগারেশন ফাইল
├── database/ # ডাটাবেসের মাইগ্রেশন, সিডার, ফ্যাক্টরি
├── public/ # পাবলিক ফাইল (CSS, JS, Images)
├── resources/ # ভিউ ফাইল, ভাষা ফাইল, অন্যান্য রিসোর্স
├── routes/ # রাউট কনফিগারেশন
├── storage/ # লগ, ক্যাশে, এবং অস্থায়ী ফাইল
├── tests/ # টেস্ট কেস
└── vendor/ # Composer প্যাকেজ
এই ফোল্ডারটি অ্যাপ্লিকেশনের মূল লজিক ধারণ করে। এখানে মডেল, কন্ট্রোলার, মিডলওয়্যার এবং অন্যান্য ক্লাস থাকে।
এটি অ্যাপ্লিকেশন শুরু করার জন্য প্রয়োজনীয় ফাইল ধারণ করে। app.php ফাইলটি এখানে থাকে, যা অ্যাপ্লিকেশনকে লোড এবং কনফিগার করতে ব্যবহৃত হয়।
অ্যাপ্লিকেশনের কনফিগারেশন ফাইলগুলি এখানে থাকে, যা বিভিন্ন সেটিংস এবং কনফিগারেশন মান ধারণ করে।
এই ফোল্ডারে ডাটাবেস মাইগ্রেশন, সিডার এবং ফ্যাক্টরি ফাইল থাকে। মাইগ্রেশনগুলো ডাটাবেস স্কিমা পরিবর্তন করার জন্য ব্যবহৃত হয়।
এটি অ্যাপ্লিকেশনের পাবলিক ফাইলগুলি ধারণ করে, যেমন CSS, JavaScript, এবং ইমেজ। এটি লারাভেল অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট।
এখানে ভিউ ফাইল, ভাষা ফাইল এবং অন্যান্য রিসোর্স থাকে। Blade টেমপ্লেট এবং স্থানীয়করণ(Localization) ফাইলগুলোও এই ফোল্ডারে রয়েছে।
অ্যাপ্লিকেশনের রাউট কনফিগারেশন ফাইলগুলো এখানে থাকে। প্রতিটি রাউট অ্যাপ্লিকেশনের URL এবং তার সাথে সম্পর্কিত কন্ট্রোলার সংযুক্ত করে।
লগ, ক্যাশে, সেশন এবং অস্থায়ী ফাইল সংরক্ষণ করে। এটি তিনটি সাব-ডিরেক্টরি ধারণ করে:
অ্যাপ্লিকেশনের টেস্ট কেস সংরক্ষণ করা হয়। এখানে PHPUnit টেস্ট ফাইলগুলো থাকে।
Composer দ্বারা ইনস্টল করা সমস্ত প্যাকেজ সংরক্ষণ করে। এটি আপনার অ্যাপ্লিকেশনের জন্য ব্যবহৃত তৃতীয় পক্ষের লাইব্রেরি ধারণ করে।
Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি শক্তিশালী এবং কার্যকরী ভিত্তি প্রদান করে, যা ডেভেলপারদের জন্য কোড সংরক্ষণ, পরিচালনা এবং উন্নয়ন প্রক্রিয়াকে সহজ করে। এই সংগঠিত স্ট্রাকচারটি বড় এবং জটিল অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে এবং অ্যাপ্লিকেশনের বিভিন্ন অংশকে পৃথক করে রাখে, যাতে কোডটি আরও রক্ষণাবেক্ষণযোগ্য হয়।
Laravel 11-এর App Directory হল অ্যাপ্লিকেশনের প্রধান অংশ, যেখানে সমস্ত ব্যবসায়িক(Business) লজিক, কন্ট্রোলার, মডেল এবং অন্যান্য গুরুত্বপূর্ণ উপাদান রাখা হয়। এই ডিরেক্টরির বিভিন্ন অংশ এবং তাদের উদ্দেশ্য সম্পর্কে বিস্তারিত জানানো হলো:
app/
├── Console/
├── Exceptions/
├── Http/
│ ├── Controllers/
│ ├── Middleware/
│ └── Requests/
├── Models/
├── Policies/
└── Providers/
এই ফোল্ডারটি Laravel-এর Artisan কমান্ড তৈরি করার জন্য ব্যবহৃত হয়। আপনি যদি কাস্টম Artisan কমান্ড তৈরি করতে চান, তবে আপনার কোড এখানে থাকবে।
উদাহরণ:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class ExampleCommand extends Command
{
protected $signature = 'example:command';
protected $description = 'Example command description';
public function handle()
{
// Command logic
}
}
এখানে কাস্টম এক্সেপশন হ্যান্ডলার এবং অন্যান্য ত্রুটির ক্লাস থাকে। Laravel-এর Handler ক্লাসটি এখানে থাকে, যা অ্যাপ্লিকেশনকে ত্রুটিগুলি পরিচালনা করতে সাহায্য করে।
উদাহরণ:
namespace App\Exceptions;
use Exception;
class CustomException extends Exception
{
// Custom logic for handling exceptions
}
এই ডিরেক্টরির মধ্যে HTTP সম্পর্কিত কোডগুলো সংরক্ষিত হয়:
Controllers/: এখানে অ্যাপ্লিকেশনের কন্ট্রোলার ক্লাসগুলো থাকে। কন্ট্রোলারগুলি রিকুয়েস্ট এবং রেসপন্স পরিচালনা করে এবং মডেল ও ভিউ-এর মধ্যে সমন্বয় সাধন করে।
উদাহরণ:
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
}
Middleware/: মিডলওয়্যার হলো অ্যাপ্লিকেশনের রিকুয়েস্ট এবং রেসপন্সের মধ্যে একটি প্রক্রিয়া। এটি সাধারণত রিকুয়েস্টের আগে বা পরে কিছু নির্দিষ্ট কাজ সম্পাদন করে।
উদাহরণ:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age < 18) {
return redirect('home');
}
return $next($request);
}
}
Requests/: এই ফোল্ডারে কাস্টম রিকুয়েস্ট ভ্যালিডেশন ক্লাসগুলো থাকে, যা ইনপুট ডাটা যাচাই করার জন্য ব্যবহৃত হয়।
উদাহরণ:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
];
}
}
মডেলগুলি ডাটাবেস টেবিলের প্রতিনিধিত্ব করে এবং সেই টেবিলের সাথে সম্পর্কিত কার্যক্রম (CRUD) পরিচালনা করে। মডেলগুলি ডেটা ম্যানিপুলেশন এবং ব্যবসায়িক(Business) লজিক পরিচালনা করার জন্য ব্যবহৃত হয়।
উদাহরণ:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
পলিসি ক্লাসগুলো অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়। এটি নির্ধারণ করে যে ইউজার একটি নির্দিষ্ট রিসোর্সে প্রবেশের অনুমতি পাবে কিনা।
উদাহরণ:
namespace App\Policies;
use App\Models\User;
use App\Models\Post;
class PostPolicy
{
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
}
সার্ভিস প্রোভাইডারগুলি অ্যাপ্লিকেশন শুরু করার সময় বিভিন্ন সার্ভিস এবং কনফিগারেশন রেজিস্টার করে। এটি Laravel অ্যাপ্লিকেশনটির হৃদয়(herat), যেখানে সার্ভিসগুলোকে প্যাকেজের মাধ্যমে এবং কাস্টম কনফিগারেশন দিয়ে রেজিস্টার করা হয়।
উদাহরণ:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Register services
}
public function boot()
{
// Bootstrap services
}
}
Laravel 11-এর App Directory হলো অ্যাপ্লিকেশনের কেন্দ্রবিন্দু, যেখানে ব্যবসায়িক লজিক, ডাটাবেস মডেল, কন্ট্রোলার, মিডলওয়্যার এবং পলিসি ক্লাসগুলো রাখা হয়। এই সংগঠিত স্ট্রাকচার ডেভেলপারদের জন্য অ্যাপ্লিকেশন তৈরি এবং রক্ষণাবেক্ষণ সহজ করে, এবং এটি বড় এবং জটিল অ্যাপ্লিকেশনগুলোর জন্য একটি পরিচ্ছন্ন ও সুসংহত কোডবেস নিশ্চিত করে।
ডিরেক্টরি স্ট্রাকচার সম্পর্কে আরও জানতে ডিরকেটরি স্ট্রাকচার ব্লগটি পড়ুন।